| 
					    
                            Apache Wink : 7.1 JSON
                                                    
				     
					    This page last changed on Oct 13, 2009 by michael.
				     JSON ProvidersApache Wink provides a set providers that are capable of serializing a number of data models into JSON representations. There are currently 3 Apache Wink extensions that provide JSON support. Each has unique features that may make one more suitable for your particular application. wink-json-provider (org.json)The wink-json-provider extension is provided in the binary distribution and uses the JSON.org classes to provide JSON support. Include the wink-json-provider-<VERSION>.jar in the classpath and the providers will automatically be registered. You will also need the org.json JAR which is provided in the ext/wink-json-provider/lib folder. org.apache.wink.providers.json.JsonProviderHandles reading and writing of org.json.JSONObject classes for the application/json and application/javascript media types. 
 org.apache.wink.providers.json.JsonArrayProviderHandles reading and writing of org.json.JSONArray classes for the application/json and application/javascript media types. 
 org.apache.wink.providers.json.JsonJAXBProviderHandles reading and writing of JAXBElement and JAXB annotated classes for the application/json and application/javascript media types. 
 Producing and Consuming JSON ExampleThe following example demonstrates the usage of a JSON provider for reading and writing JSON representations. 
    @GET
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public JSONObject postJSON(JSONObject requestJSON) {
        String property = requestJSON.getString("property");
        JSONObject jobj = new JSONObject();
        return jobj;
    }
    /* Book is a JAXB annotated class */
    @GET
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Book postJSONBook(Book requestBookEntity) {
        String title = requestBookEntity.getTitle();
        /* other code */
        Book response = new Book();
        return response;
    }
wink-jettison-provider (org.codehaus.jettison)The wink-jettison-provider extension is provided in the binary distribution and uses the Jettison code to provide JSON support. Include the wink-jettison-provider-<VERSION>.jar in the classpath and the providers will automatically be registered. You will also need the Jettison library JARs which are provided in the ext/wink-jettison-provider/lib folder. By default, reading is currently disabled due to potential issues with the reader. You can enable it by calling setUseAsReader(boolean) on each provider and registering as a singleton in the JAX-RS Application sub-class. org.apache.wink.providers.jettison.JettisonJAXBElementProviderHandles reading and writing of JAXBElement classes for the application/json media type. 
 org.apache.wink.providers.jettison.JettisonJAXBElementProviderHandles reading and writing of JAXB annotated classes for the application/json media type. 
 ExampleThe following examples demonstrates the usage of a Jettison provider for producing and consuming JSON. Jettison Provider RegistrationThe following code example demonstrates the way to register a Jettison provider within a JAX-RS application. 
    public class MyApp extends Application {
        public Set getClasses() {
            Set s = new HashSet();
            s.add(MyResource.class);
            return s;
        }
        public Set<Object> getSingletons() {
            Set s = new HashSet();
            JettisonJAXBProvider jaxbProvider = new JettisonJAXBProvider();
            jaxbProvider.setUseAsReader(true);
            return s;
        }
    }
Producing and Consuming JSONThe following code example demonstrates the reading and writting of JAXB objects into a JSON representation by using a Jettison provider. 
    /* Book is a JAXB annotated class */
    @GET
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Book postJSONBook(Book requestBookEntity) {
        String title = requestBookEntity.getTitle();
        /* other code */
        Book response = new Book();
        return response;
    }
Jackson JSON ProcessorJackson JSON Processor may also suit your needs and can be used. They provide their own JAX-RS entity provider. See their documentation for more information. | 
|  | 
| Document generated by Confluence on Nov 11, 2009 06:57 |